<?php
/**
 * 文章资讯模块
 * 
 * ============================================================================
 * 版权所有: (c) 2009-2011，<UEShop Inc>，并保留所有权利。
 * 网站地址: http://www.ueshop.cn
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用；
 * 不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 *
 * @author      cmpan
 * @copyright   Copyright (c) 2009-2010 UEShop Inc. (http://www.ueshop.cn)
 * @license     http://www.ueshop.cn/1_0.txt
 */
class InfoModel extends UE_Model {
    public $table  = 'ue_info';
	public $key    = 'info_id';
	
	public function add($info) {
	    //print_r($info);
	    if (strlen($info['info_title']) < 8 || strlen($info['info_title']) > 80) {
	    	$this->setErr('标题长度为4-40个中文字符或8-80个英文字符！');
	    	return false;
	    }
	    	    
	    $info['info_id']        = empty($info['info_id']) ? makeUeid() : $info['info_id'];
	    $info['info_status']    = $info['info_is_draft'] ? 0 : 1;  // 1：发布，0：草稿，-1：垃圾	    
	    $info['info_dateline']  = time();	    
	    $info['info_desc']      = $info['info_desc'] ? $info['info_desc'] : substr(strip_tags($info['info_content']), 0, 200);	    		
	    $info['item_url']       = self::getInfoUrl($info['info_id'], $info['cat_id']);

	    // 保存文章内容   
	    $this->_db()->query("INSERT INTO ue_info_content (info_id, info_content) VALUE ('{$info['info_id']}', '{$info['info_content']}')");
	   
	    // 保存文章信息
	    return parent::add($info);;
	}
	
	/**
	 * 获取一篇文章的所有内容
	 *
	 * @param string $id
	 * @return array
	 */
	public function read($id = null) {
		if ($id) {
			$this->id = $id;
		}
		
		$info = parent::read($this->id);
		// 内容
		if ($info) {
	    	$sql = "SELECT info_content FROM ue_info_content WHERE info_id='{$this->id}' LIMIT 1";
	    	$info['info_content'] = UE_DB::factory()->getfirstField($sql);
	    }
	    return $info;
	}
	
	public function update($info) {
		if (!$this->check()) {
			return false;
		}
		
		$db = UE_DB::factory();
		$oldInfo = $this->read();
		
		  //print_r($info);
	    if (strlen($info['info_title']) < 8 || strlen($info['info_title']) > 80) {
	    	$this->setErr('标题长度为4-40个中文字符或8-80个英文字符！');
	    	return false;
	    }
	    
	    unset($info['info_id']);
	    $info['info_status']         = $info['info_is_draft'] ? 0 : 1;  // 1：发布，0：草稿，-1：垃圾	    
	    $info['info_modified_time']  = time();
	    $info['item_url']            = self::getInfoUrl($this->id, $info['cat_id']);
	    $info['info_desc']           = $info['info_desc'] ? $info['info_desc'] : mb_substr(strip_tags($info['info_content']), 0, 255);
	    
	    if(!parent::update($info)) {
	    	return false;
	    }
	    
	    $this->_db()->query("REPLACE INTO ue_info_content (info_id, info_content) VALUE ('{$this->id}', '{$info['info_content']}')");
	    
	    return true;
	}
	
	public function delete() {
		if(! $this->check()) {
			return false;
		}
		$db = UE_DB::factory();
		
		if(false === $db->delete('ue_info_content', 'info_id', $this->id)) {
			$this->setErr($db->getLastErr());
			return false;
		}
		
		$del = parent::delete();
		
		UE_Cache::factory()->clear('cats');
		
		return $del;
	}
	
	/**
	 * 更新info url
	 *
	 * @param int $id
	 * @param int $catId
	 * @return string
	 */	
	public static function getInfoUrl($id = 0, $catId = 0) {
		// TODO 支持URL Rewrite 中加上栏目名
		return UE_Url::make('info/show/item/'.$id);
	}
}